package com.huluobo.lc.kotlinim1803a.ui.activity

import android.app.ProgressDialog
import android.content.Context
import android.os.Bundle
import android.view.inputmethod.InputMethodManager
import androidx.appcompat.app.AppCompatActivity

/**
 * @author Lc
 * @description: 作用封装公共的功能和方法,减少代码量,利于项目的扩展,如果我需要给每个activity都添加摇一摇的功能
 * 如果不使用基类,每个activity都需要添加一段摇一摇的代码,即增加代码又不利于项目维护
 * @date :2020/9/10 17:04
 */
abstract class BaseActivity : AppCompatActivity() {

    //相当于Android中的ProgressDialog progressDialog=new ProgressDialog()
    //lazy代表当使用该对象时才会进行初始化,当没有指向性时,该对象可能会被销毁
    private val progressDialog by lazy {
        ProgressDialog(this)
    }

    private val inputMethodManager by lazy {
        getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(getLayoutResId())
        init()
    }

    open fun init() {
        //初始化一些公共的功能,比如摇一摇,子类可以复写,完整自己的初始化
    }

    //子类必须实现该方法返回一个布局资源ID
    abstract fun getLayoutResId(): Int

    fun showProgress(message: String) {
        progressDialog.setMessage(message)
        progressDialog.show()
    }

    fun dismissProgress() {
        progressDialog.dismiss()
    }

    //隐藏软键盘
    fun hideSoftKeyboard() {
        inputMethodManager.hideSoftInputFromWindow(currentFocus?.windowToken, 0)
    }
}